/**
 * MinioService
 *
 * 主要职责：
 * - 对接 Minio（S3 兼容）的文件上传/下载/删除和签名 URL 生成
 *
 * 关键方法示例：
 * - String uploadFile(String bucket, InputStream in, String objectName)
 * - String generatePresignedUrl(String bucket, String objectName, Duration expiry)
 *
 * 实现关注点：
 * - 桶和对象命名策略、异常重试、权限（公开/私有）
 *
 * 答辩要点：
 * - 选用 Minio 的理由、如何保障文件可用性
 */
package net.zjitc.yqmusicserver.service;

import org.springframework.web.multipart.MultipartFile;

public interface MinioService {
    /**
     * 上传文件到 MinIO
     * @param file   要上传的文件
     * @param folder 存储文件的目录
     * @return 文件访问 URL
     */
    String uploadFile(MultipartFile file, String folder);

    /**
     * 删除 MinIO 文件
     * @param fileUrl 文件 URL
     */
    void deleteFile(String fileUrl);

}
